package test

import sil.Silabeador;
import sil.Palabra;

class PalabraTest extends GroovyTestCase
{
  def p
  
  void testConstructor()
  {
    shouldFail() {new Palabra()}
    shouldFail() {new Palabra('')}
  }

  void testSilabas()
  {
    p = new Palabra('casa')
    assertArrayEquals(p.silabas, ['ca', 'sa'].toArray())
  }
  
  void testTonica()
  {
    p = new Palabra('mo')
    assert (p.tonica == 0)

    p = new Palabra('agamenón')
    assert (p.tonica == 3)
  }
  
  void testAcento()
  {
    assert(new Palabra('agamenón').acento == Palabra.AGUDA)
    assert(new Palabra('casas').acento == Palabra.LLANA)
    assert(new Palabra('Murciélago').acento == Palabra.ESDRUJULA)
    assert(new Palabra('estupendísimamente').acento == Palabra.SOBREESDRUJULA)
    assert(new Palabra('llévesemelo').acento == Palabra.SOBREESDRUJULA)
  }

  void testConsonante()
  {
    assert(new Palabra('fiesta').consonante()=='ésta')
    assert(new Palabra('miel').consonante()=='él')
    assert(new Palabra('el').consonante()=='él')
    assert(new Palabra('acudieron').consonante()=='éron')
  }

  void testVocalesEquivalentes()
  {
    def vocales =  ['a','á','e','é','i','í','o','ó','u','ú']
    def expected = ['a','á','i','é','i','í','u','ó','u','ú']
    def actual = new Palabra('cualquiera').vocalesEquivalentes(vocales)
    assert(actual==expected)
  }
  
  void testEsdrujulas()
  {
    def vocales =  ['a','u','ú']
    def expected = ['a','ú']
    def actual = new Palabra('cualquiera').esdrujulas(vocales)
    assert(actual==expected)
  }

  void testAsonante()
  {
    // sólo pillamos la sílaba tónica en los diptongos
    assert(new Palabra('fiesta').asonante()==new Palabra('vela').asonante())
    assert(new Palabra('maite').asonante()==new Palabra('yate').asonante())
    assert(new Palabra('niño').asonante()==new Palabra('ruido').asonante())

    // o átona==u átona
    assert(new Palabra('barco').asonante()==new Palabra('charru').asonante())
    // e átona==i átona
    assert(new Palabra('venus').asonante()==new Palabra('cielo').asonante())
    // e átona==i átona
    assert(new Palabra('pete').asonante()==new Palabra('meli').asonante())
    
    // esdrújulas ignoramos la sílaba penúltima
    assert(new Palabra('súbito').asonante()==new Palabra('turco').asonante())
  }
}
